package com.snpic.appaw.module.insure.util.s3;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class ImageUtils {
    /**
     * 将InputStream转换为BufferedImage。
     * @param inStream 要转换的InputStream
     * @return 转换后的BufferedImage
     * @throws IOException 如果读取InputStream时出错
     */
    public static BufferedImage inputStreamToBufferedImage(InputStream inStream) throws IOException {
        return ImageIO.read(inStream);
    }

    /**
     * 将BufferedImage转换为InputStream。
     * @param srcImg 要转换的BufferedImage
     * @param formatName 图像的格式
     * @return 转换后的InputStream
     * @throws IOException 如果写入InputStream时出错
     */
    public static InputStream bufferedImageToInputStream(BufferedImage srcImg, String formatName) throws IOException {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(srcImg, formatName, os);
        return new ByteArrayInputStream(os.toByteArray());
    }

    /**
     * 用于测试ImageUtils类的主要方法。
     * @param args 命令行参数（未使用）
     * @throws IOException 如果读取或写入InputStream时出错
     */
    public static void main(String[] args) throws IOException {
        // 从文件创建InputStream
        InputStream inStream = ImageUtils.class.getResourceAsStream("test.jpg");
        // 将InputStream转换为BufferedImage
        BufferedImage image = ImageUtils.inputStreamToBufferedImage(inStream);
        // 将BufferedImage转换为InputStream
        InputStream newInStream = ImageUtils.bufferedImageToInputStream(image, "jpg");
        // 关闭原始InputStream
        inStream.close();
        // 显示转换后的图像
        // ...
    }
}
